package it.maganar.lesscaos.client;



import it.maganar.lesscaos.session.ServiceGateRemote;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;



public class LoginWidget {

	private JFrame frame;
	private JPanel pannelloTitolo;
	private JPanel pannelloCorpo;
	private JPanel pannelloForm;
	private JPanel pannelloCentrale;
	private JPanel pannelloBottone;
	private JLabel titolo;
	private JLabel labelNomeUtente;
	private JTextField areaNomeUtente;
	private JLabel labelPassword;
	private JPasswordField areaPassword;	
	private JButton bottoneLogin;
	
	
	ServiceGateRemote serviceGate;
	
	
	
	LoginWidget(final LessCaosMainWidget lcmw){
		
		serviceGate = NetworkConnector.sgr;
		
		// Inizializzazione Frame
		frame = new JFrame("LESS-CAOS");
		frame.setLayout(new BorderLayout());
		
		
		// Inizializzazione e Inserimento pannelli principali
		pannelloTitolo = new JPanel();
		pannelloTitolo.setLayout(new FlowLayout());
		pannelloTitolo.setBackground(Color.DARK_GRAY);
		frame.add(pannelloTitolo, BorderLayout.NORTH);
		
		pannelloCorpo = new JPanel();
		pannelloCorpo.setLayout(new FlowLayout());
		//pannelloCorpo.setBackground(Color.LIGHT_GRAY);
		frame.add(pannelloCorpo, BorderLayout.CENTER);
		
		pannelloCentrale = new JPanel();
		pannelloCentrale.setLayout(new BoxLayout(pannelloCentrale, BoxLayout.Y_AXIS));
		pannelloCorpo.add(pannelloCentrale);
		
		// Inizializzazione e Inserimento label
		titolo = new JLabel("Login");
		titolo.setForeground(Color.WHITE);
		pannelloTitolo.add(titolo);
		
		
		// Inizializzazione e Inserimento pannello form
		pannelloForm = new JPanel();
		pannelloForm.setLayout(new GridLayout(6,2));
		//pannelloForm.setBackground(Color.LIGHT_GRAY);
		pannelloCentrale.add(pannelloForm);
		
		pannelloBottone = new JPanel();
		pannelloBottone.setLayout(new FlowLayout());
		pannelloCentrale.add(pannelloBottone);
		
		//Inizializzazioni e Inserimento label e textField
		pannelloForm.add(new JLabel(""));
		pannelloForm.add(new JLabel(""));
		
		labelNomeUtente = new JLabel("Nome Utente: ");
		pannelloForm.add(labelNomeUtente);
		
		areaNomeUtente = new JTextField(10);
		pannelloForm.add(areaNomeUtente);
		
		pannelloForm.add(new JLabel(""));
		pannelloForm.add(new JLabel(""));
		
		labelPassword = new JLabel("Password: ");
		pannelloForm.add(labelPassword);
		
		areaPassword = new JPasswordField(10);
		pannelloForm.add(areaPassword);
		
		
		pannelloForm.add(new JLabel(""));
		pannelloForm.add(new JLabel(""));
		
		// Inizializzazione e Inserimento button registra
		bottoneLogin = new JButton("Login");		
		bottoneLogin.setEnabled(true);
		
		pannelloBottone.add(bottoneLogin);
		
		//END
		frame.pack();
		frame.setSize(500,400);
		frame.setVisible(true);
		//frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		frame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent event) {
				lcmw.setVisible(true);
	        } 
	    });
		
		
		
		//***** SEZIONE EVENTI *****//
		
		
		bottoneLogin.addMouseListener(	new MouseListener() {
			
			@Override
			public void mouseReleased(MouseEvent arg0) {}
			
			@Override
			public void mousePressed(MouseEvent arg0) {
				
				
				// controllo che tutti i campi siano stati completati
				if (	( (areaNomeUtente.getText() != null) && (!areaNomeUtente.getText().trim().equals("")) ) &&
						( (areaPassword.getText() != null) && (!areaPassword.getText().trim().equals("")) ) ){
				
					// Esecuzione Login
					boolean esito;
					String nomeUtente = areaNomeUtente.getText();
					String password = areaPassword.getText();
									
					esito = serviceGate.login(nomeUtente, password);
					
					if (esito){
						JOptionPane.showMessageDialog(null, "Login effettuato con successo", "Login Effettuato", JOptionPane.INFORMATION_MESSAGE);
					}
					else{
						JOptionPane.showMessageDialog(null, "Login non riuscito", "Login Non riuscito", JOptionPane.ERROR_MESSAGE);
					}
					frame.setVisible(false);
					lcmw.setVisible(true);
				}
				else{
			
					JOptionPane.showMessageDialog(null, "Ci sono campi vuoti", "Inserimento Errato", JOptionPane.INFORMATION_MESSAGE);
				}	
			}
			
			
			@Override
			public void mouseExited(MouseEvent arg0) {}
			
			@Override
			public void mouseEntered(MouseEvent arg0) {}
			
			@Override
			public void mouseClicked(MouseEvent arg0) {}
		});
				
				
	}
	
}
